Central Processing Unit (CPU), “microprocessor” for short, is a core unit of a computer. The instruction set and design code (system architecture) adopted by a microprocessor are the primary characteristics of a computer, and they determine the types of the peripheral equipment and application software that a computer needs to use.
At present, there are two popular processor system architectures in the world: one is the Reduced Instruction Set Computing (RISC) processor system architecture represented by the MIPS32/64 Instruction Set of MIPS Technologies, Inc., and the other is the Complex Instruction Set Computing (CISC) processor system architecture represented by X86 of Intel Corporation. The CISC processor involves a huge number of instructions, some of which can execute functions quite complicated and generally need many clock periods to execute them; however, the RISC processor uses a relatively small quantity of available instructions to execute a group of simpler functions at a higher speed. The program software running on a processor adopting a different system architecture needs to be written according to the system architecture of the processor, and the application software running on X86 usually can't be run on a computer having a MIPS Instruction Set-based RISC processor, i.e., they are incompatible as what's always said.
However, computer manufacturers expect to save on costs of software development by running more existing software on a microprocessor of a system architecture manufactured by themselves and, meanwhile, to attain the object of maximizing their market shares.
In order to solve this problem, virtual machines emerge as the times require. Generally, a CPU computer having a single type of system architecture is called a host; meanwhile, a CPU environment of an unrelated system architecture type, which needs to be emulated by the host, is called an object machine, and an application program, which enables the host to execute one or more host instructions to run the software written for the object machine in response to the given object machine instruction, is needed and is called a virtual machine.
Virtual machines existing currently include SimOS, QEMU, Transmeta and so on. But, the existing virtual machines cost too much overhead and have a too low execution efficiency when they are running because of the tremendous differences among various system architectures, so it's very difficult to apply them to practical operations.
The efficiency of a binary instruction translation from the X86 virtual machine to the RISC relies on the similarity between the RISC and the X86 in system architecture to a great extent. But, the X86 system architecture has many characteristics that the RISC architecture does not have. Those characteristics include: a fixed-point operation instruction in the X86 system architecture supports the operation of flag bits; the floating-point number operation and the floating-point stack operation of 80 bits in the X86 architecture; and the existence of segment base registers; and so on. In this way, when the X86 virtual machine in the RISC processor is operating, the binary instruction translation will have a low efficiency due to the problem of translation between instructions of different system architectures, whereby the operation speed can't be improved.